HBase安裝模式與Hadoop相同,有Standalone
、Pseudo-Distributed
與Fully-Distributed
,而這些名稱也是根據Hadoop的安裝模式所命名。比較特別的是Standalone
與Pseudo-Distributed
模式不一定要將資料儲存在HDFS上,但無法擁有Hadoop的容錯機制與分散式等優點,而Fully-Distributed
只能 運行在Hadoop上面。
與Hadoop相同,HBase原始碼也是由Java撰寫,所以也是需要安裝JDK並且設定JAVA_HOME。
另外,HBase是架設在Hadoop上面的DataBase,如果想擁有Hadoop分散式儲存的功能,一個Hadoop叢集也是必要的。
所以需要作下列的準備:
HBASE_HOME
。這邊使用2.0.0-appha4版本當作安裝教學範例。#下載已經Build好的Hadoop檔案儲存至/opt,並且解壓縮至/opt/hbase目錄
cd /opt
sudo wget http://apache.stu.edu.tw/hbase/2.0.0-alpha4/hbase-2.0.0-alpha4-bin.tar.gz
#解壓縮
sudo tar -zxvf hbase-2.0.0-alpha4-bin.tar.gz
#移動至/opt/hbase
sudo mv /opt/hbase-2.0.0-alpha4-bin /opt/hbase
#編輯~/.bashrc
sudo vi ~/.bashrc
#加入下列參數
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
與Hadoop相同,Standalone是HBase預設的模式,啟動時會在一個JVM內運行所有HBase全部的daemon,包含Master、RegionServer與ZooKeeper。
使用local file system安裝模式:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///opt/data/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/data/zookeeper</value>
<description>如果沒有設定,預設路徑為/tmp</description>
</property>
</configuration>
hbase-site.xml 所設定的路徑如果不存在,HBase啟動時會自動建立。
cd ${HBASE_HOME}/bin
sudo bash start-hbase.sh
如果啟動成功,可以使用jps
指令來觀察HBase的daemon,其中會包含:
使用HDFS安裝模式:
local file system
模式相同,只要將hbase.rootdir
改為HDFS上的路徑,並將hbase.cluster.distributed
設定為false
<property>
<name>hbase.rootdir</name>
<value>hdfs://{hostname}:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
備註:{hostname}
為主機名稱,請依照自己的Hadoop Namenode所在的hostname修改。
與Standalone運作方式類似,差別在於Pseudo-Distributed的daemon是在不同的JVM運作。儲存模式也與Standalone一樣,可以使用local file system或是HDFS,設定方法也與Standalone模式相同,只要修改hbase-site.xml。
設定為Pseudo-Distributed模式:
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
如果已經啟動Standalone模式的HBase,務必請先關閉再重新啟動,可使用下列指令關閉:
cd ${HBASE_HOME}/bin
#關閉HBase
sudo bash stop-hbase.sh
或者是使用rolling restart重新啟動HBase,不必完全關閉HBase。
cd ${HBASE_HOME}/bin
#rolling restart HBase
sudo bash rolling-restart.sh
由於Fully-Distributed
只支援運作在HDFS,所以必須先準備好Hadoop,Hadoop運作模式一樣可以使用那三種模式。如果是要在production環境運作,無論是Hadoop或是HBase皆強烈建議使用Fully-Distributed
。
hbase.rootdir
必需設定為HDFS路徑,且hbase.cluster.distributed
需設定為true
。HBase運作時需要zookeeper的協助,在production環境強烈建議需要一組不同於Hadoop與HBase的機器來運作zookeeper。實驗性質則可以使用HBase內建的zookeeper,不需要額外安裝。#編輯regionservers
sudo vi ${HBASE_HOME}/conf/regionservers
#加入機器的hostname,如果有三台機器,請依序加入如下所示
server-a1
server-a2
server-a3
設定完成就可以啟動HBase了!
安裝完成後,可以透過 http://{HBASE_MASTER_HOST_NAME_OR_IP}:16010
web ui 來查看HBase叢集的狀況。{HBASE_MASTER_HOST_NAME_OR_IP}
為HBase Master所在的機器。
無論是Standalone
、Pseudo-Distributed
或是Fully-Distributed
,需挑選適用的安裝模式才能發揮HBase最好的效益,也能減少使用上的困擾。
如果想要快速體驗Fully-Distributed
模式的HBase cluster,可以使用作者所撰寫的hbase on docekr,內有使用說明與教學,也歡迎fork並開PR。
介紹完了HBase安裝後,接下來要進入hbase shell
的使用教學!
請問小弟安裝的是
hadoop 2.8
hbase 2.0.4
hbase start 之後所見的 jps 只有
8436 NameNode
10772 ResourceManager
8743 SecondaryNameNode
12633 Jps
10874 NodeManager
12154 HMaster
8573 DataNode
而上述兩者皆採用 stand alone 方式來啟用
請問還有其他的檢測方式, 來看服務的啟動狀況嗎? (除了又臭又長的 log以外...)
另一種檢測方式可以直接到HBase的Web UI看一下RegionServer是否有啟動, 如果沒有還是得面對log了, 這樣才能知道發生什麼問題導致RegionServer啟動失敗.
您好請問我是用ambari-server安裝HBase功能,那我還需要設置HBASE_HOME環境變數嗎
Hi,
基本上透過平台(ambari, cloudera等)安裝HBase都不用額外進行設定HBASE_HOME, 這些平台都會自動設定。
請問這邊是筆誤嗎
Fully-Distributed只能運行在
Hadoop
上面
Fully-Distributed 只能運行在 HBase
上面 (?
Fully-Distributed只能運行在Hadoop上面
不好意思,這篇文章內並沒有寫到這段文字,不曉得您在文章那一段落看到這段文字呢?
抱歉,我看到了。在文章一開始就開宗明義寫了這段文字,這並不是筆誤,請問對於這段文字哪邊有誤解,所以認為是筆誤呢?
現在能儲存資料的方式有兩種: file://
or hdfs://
如紅筆處,所以 Hadoop 的 Standalone
與 Pseudo-Distributed
模式可改用 file://
但藍筆處,為何儲存方式又會冒出 Hadoop (?
這一篇是在說明 HBase
的安裝方式,一共有三種: Standalone
, Pseudo-Distributed
與 Fully-Distributed
而Fully-Distributed
需要依賴Hadoop。
請問這樣說明有比較清楚嗎?
Fully-Distributed 需要依賴 Hadoop
那我可以 Hadoop 再去選擇他自己的 Standalone
or Pseudo-Distributed
(?
那我可以 Hadoop 再去選擇他自己的 Standalone or Pseudo-Distributed
如果考量的點是 可不可執行
那我沒有試過,不確定能不能在HBase使用Fully-Distributed
狀況下,Hadoop使用 Standalone
or Pseudo-Distributed
,這一點需要請您自行測試,如果可以也歡迎分享一下測試結果。
以實務上的考量來看,HBase 既然都已經使用 Fully-Distributed
意味著需要進行分散處理增加效能或者其他的益處,但hdfs卻是使用 Standalone
或 Pseudo-Distributed
,這樣就失去了增加效能的用意,倒不如直接將HBase 安裝成 Standalone 或 Pseudo-Distributed,這樣也不用另外安裝HDFS.
感謝 !! 我再多試試看